--[[ 虫姬2(黑版)脚本,2008年的游戏,这次坐标终于改成了简单的x,y各一个大端u16数字,直接read_u16即可,简单
  游戏已有中心显示,只需要参考线
 
  By setycyas @2025-02-18
]]

--防止重复运行
if (_G.game) then
  print('script already loaded!')
  return
end
--模块调用
local myMame = require('MyMame')
local myStg = require('MySTG')
-- 本模块,定义时设定基本参数
local GAME = {
  -- 脚本名,提示与分辨用
  NAME = "futaribl_autoboot",
  -- 分辨率
  Y_RESOLUTION = 240.0, X_RESOLUTION = 320.0,
  -- 坐标地址,高位,都用read_u16读取
  Y_ADDR = 0x0c51c588, X_ADDR = 0x0c51c58c,
  -- 火力与蓄力地址
  --POW_ADDR = 0x0605505b,CHARGE_ADDR = 0x06055074,
  -- 像素平移
  Y_OFFSET = 0, X_OFFSET = 0,
  -- 中心参考线线颜色,宽度
  LINE_WIDTH = 1.2, LINE_COLOR = 0xA0A000A0,
  -- 更新模块参数函数
  refreshModule = function(self)
    myMame.gameName = self.NAME
    myMame.screenIndex, myStg.screenIndex = ':screen', ':screen'
    myStg.X_RESOLUTION, myStg.Y_RESOLUTION = self.X_RESOLUTION, self.Y_RESOLUTION
  end
}
-- 更新模块参数
GAME:refreshModule()

-- 获取坐标,返回整数
function GAME.getY()
  local y
  y = myMame.mem:read_u16(GAME.Y_ADDR)
  return y+GAME.Y_OFFSET
end
function GAME.getX()
  local x
  x = myMame.mem:read_u16(GAME.X_ADDR)
  return x+GAME.X_OFFSET
end

-- 监视各地址,测试时用投入使用时不显示,把需要监视的地址加入addrArr数组
function GAME.watchAddrs()
  local addrArr, strArr, i
  addrArr = {0x0c383e99, 0x0c49189d, 0x0c51c589}
  --for i = 1, 10 do
  --  addrArr[i] = GAME.Y_ADDR-5+i
  --end
  strArr = myMame.readAddrArr(addrArr)
  myMame.showInfo(strArr)
end

--[[ 显示监视的数据
function GAME.check()
  local power
  power = myMame.mem:read_u8(GAME.POW_ADDR)
  myMame.container:draw_text(0, 0, "P="..power, 0xFF005500, 0xFFcccccc)
end
]]

-- 显示辅助线
function GAME.showAssist()
  myMame.ui_container:draw_box(0.495, 1.0, 0.505, 0.97, 0xDD0000dd, 0xDD0000dd)
end

-- 显示中心十字线
function GAME.showCross(x, y)
 
  if (x > 0) and (y > 0) then
    -- 中心参考线
    myStg.xLine(x, GAME.LINE_COLOR, GAME.LINE_WIDTH)
    myStg.yLine(y, GAME.LINE_COLOR, GAME.LINE_WIDTH)
  end
  
end

-- 主函数,绑定后每一帧执行一次该函数
function GAME.Main()
  local x, y
  
  x, y = GAME.getX(), GAME.getY()
  
  -- 监视数据
  --GAME.watchAddrs()
  -- 辅助线
  --GAME.showAssist()
  -- 数据监视
  --GAME.check()
  -- 中心参考线
  GAME.showCross(x, y)

end

-- [[运行]]

-- 绑定每一帧执行的函数
--myMame.debugRunPerFrame(GAME.Main, 'futaribl')
myMame.runPerFrame(GAME.Main, 'futaribl')
-- 导出到全局变量
_G.game = GAME

return GAME
